package com.yuyou.train.user.service;

import java.util.List;

import com.yuyou.train.user.vo.resp.RespHomepageOfTeacher;
import com.yuyou.train.user.vo.resp.RespTeacherInfo;
import com.yuyou.train.user.vo.resp.RespUserInfo;

import org.apache.poi.xssf.usermodel.XSSFWorkbook;

import com.yuyou.train.service.api.user.dto.UserPageDTO;
import com.yuyou.train.service.api.user.entity.User;
import com.yuyou.train.service.api.user.entity.UserImport;
import com.yuyou.train.user.vo.req.ReqUser;
import com.yuyou.train.user.vo.req.UserExcel;
import com.yuyou.train.user.vo.resp.RespUserDetail;
import com.yuyou.train.util.bean.Pagination;
import com.yuyou.train.util.bean.ResBoolSimpleInfo;


public interface IUserService {
    int deleteByPrimaryKey(String id);

    int insert(User record);

    User selectByPrimaryKey(String id);

    int updateByPrimaryKeySelective(User record);
    
    List<UserPageDTO> findUserPageList(Pagination<UserPageDTO> p);
    
    int findUserPageCount(Pagination<UserPageDTO> p);
    
    List<User> findUsers(ReqUser reqUser);
    
    User selectUsersByPhone(String phone);

    User selectUserByPhone(String phone);

    ResBoolSimpleInfo<User> updateUser(User user,List<String> subjectList,List<String> sectionList,List<String> tagList) throws Exception;
    
    ResBoolSimpleInfo<String> batchUpdSta(List<String> ids,String status);

    UserImport saveUserImport(List<UserExcel> userExcelList, String type);
    
    ResBoolSimpleInfo<String> delUser(String id);

    XSSFWorkbook failedInfoOfUserImport(List<UserExcel> userExcelList);
    
    RespUserDetail detailUser(String userId);

    RespUserInfo userInfo(String userId)throws Exception;

    RespTeacherInfo detailTeacher(String studentId, String teacherId);
    
    ResBoolSimpleInfo<String> endWord(String userId,String teacherId,String endWord) throws Exception;

    ResBoolSimpleInfo<RespHomepageOfTeacher> homepageOfTeacher(String userId);

    int findTeacherPageCount(Pagination<UserPageDTO> p);

    List<UserPageDTO> findTeacherPageList(Pagination<UserPageDTO> p);
    
}
